package sanshui.system.trade.pojo.ao;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
import sanshui.system.trade.factory.data.FilterModel;
import sanshui.system.trade.pojo.BaseAo;

import java.time.LocalDateTime;
import java.util.List;

@Data
@ApiModel(description = "创建回测系统")
@ToString
public class CreateBackTradeAo extends BaseAo {
    @ApiParam(required = false)
    @ApiModelProperty(value = "交易用户")
    String userId;
    @ApiParam(required = false)
    @ApiModelProperty(value = "交易账户")
    String accId;
    @ApiParam(required = true, defaultValue = "T1")
    @ApiModelProperty(value = "交易系统名称")
    String tradeName;
    @ApiParam(required = true, defaultValue = "T1")
    @ApiModelProperty(value = "市场数据类型：T0、T1")
    String dataMarketType;

    @ApiParam(required = true, defaultValue = "A_GU")
    @ApiModelProperty(value = "市场类型：A_GU,OKE")
    String tradeMarketKey;

    @ApiParam(required = true, defaultValue = "BACK_TRADE")
    @ApiModelProperty(value = "交易系统类型：RT,BACK_TRADE")
    String tradeSystemType;
    @ApiParam(required = false, defaultValue = "1000000")
    @ApiModelProperty(value = "手续费小数点，默认百万")
    private String feeRateAround;
    @ApiParam(required = false, defaultValue = "000001.sz")
    @ApiModelProperty(value = "固定选股标的，则从池子里面选股")
    List<String> chooseTargets;

    @ApiParam(required = false, defaultValue = "")
    @ApiModelProperty(value = "指数或板块所有股票")
    List<String> chooseTargetsIndex;

//    @ApiParam(required = false, defaultValue = "")
//    @ApiModelProperty(value = "选股标的池子，从池子里面捞符合策略的标的，既没有固定选股标的，也没有池子，则从全市场选股")
//    List<String> chooseTargetsPool;

    @ApiParam(required = false, defaultValue = "DEFAULT")
    @ApiModelProperty(value = "指标列表：DEFAULT、M45")
    List<String> indicators;

    @ApiParam(required = true, defaultValue = "DEFAULT")
    @ApiModelProperty(value = "交易策略：DEFAULT")
    String strategy;
    @ApiParam(required = true, defaultValue = "DEFAULT")
    @ApiModelProperty(value = "风控策略：DEFAULT")
    String riskStrategy;

    @ApiParam(required = false, defaultValue = "20250101150000")
    @ApiModelProperty(value = "数据开始时间")
    String startTime;
    @ApiParam(required = false, defaultValue = "20250201150000")
    @ApiModelProperty(value = "数据结束时间")
    String endTime;
    @ApiParam(required = true, defaultValue = "1d")
    @ApiModelProperty(value = "数据频率时间")
    String frequency;
    @ApiParam(required = false, defaultValue = "0")
    @ApiModelProperty(value = "需要睡眠时间")
    Long millis;
    @ApiParam(required = true, defaultValue = "1000000")
    @ApiModelProperty(value = "账户初始价值(分)")
    String initValue;
    @ApiParam(required = false, defaultValue = "100")
    @ApiModelProperty(value = "小数点位数")
    private String priceAround;
    @ApiParam(required = false, defaultValue = "1")
    @ApiModelProperty(value = "最少交易数量")
    private String numAround;
    @ApiParam(required = false, defaultValue = "100")
    @ApiModelProperty(value = "买入，过户手续费（百万）")
    private String buyFeeRateGuo;
    @ApiParam(required = false, defaultValue = "105")
    @ApiModelProperty(value = "买入，券商手续费（百万）")
    private String buyFeeRateQuan;
    @ApiParam(required = false, defaultValue = "105")
    @ApiModelProperty(value = "卖出，券商手续费（百万）")
    private String sellFeeRateQuan;
    @ApiParam(required = false, defaultValue = "500")
    @ApiModelProperty(value = "卖出，印花手续费（百万）")
    private String sellFeeRateYin;
    @ApiParam(required = false, defaultValue = "100")
    @ApiModelProperty(value = "卖出，过户手续费（百万）")
    private String sellFeeRateGuo;
    @ApiParam(required = false, defaultValue = "0")
    @ApiModelProperty(value = "买入，固定手续费（分）")
    private String buyFixedFee;
    @ApiParam(required = false, defaultValue = "0")
    @ApiModelProperty(value = "卖出，固定手续费（分）")
    private String sellFixedFee;
}
